package router

import (
	"api-gateway/handler/common"
	"api-gateway/middleware"
	"api-gateway/utils"

	"github.com/gin-gonic/gin"
)

// Router 主路由配置
// 整合患者端、医生端和公共接口
func Router() *gin.Engine {
	r := gin.Default()

	// ==================== 全局中间件 ====================

	// 日志中间件 - 记录所有请求
	l := utils.SetLogger()
	r.Use(middleware.Logger(l))

	// CORS 跨域中间件（如果需要）
	// r.Use(middleware.Cors())

	// ==================== 公共接口（不需要认证） ====================
	// 这些接口患者端和医生端都可以访问

	api := r.Group("/api")
	{
		// ========== 短信服务 ==========
		// 发送验证码，用于注册、登录、重置密码等场景
		api.POST("/sms/send", common.SendSMS)

		// ========== 文件上传 ==========
		// 统一的文件上传接口，支持图片、文件、处方等
		upload := api.Group("/upload")
		{
			upload.POST("/image", common.UploadImage)               // 上传图片（头像、病例照片等）
			upload.POST("/file", common.UploadFile)                 // 上传文件（通用文件）
			upload.POST("/prescription", common.UploadPrescription) // 上传处方图片
		}

		// ========== 系统配置 ==========
		// 获取系统配置信息
		config := api.Group("/config")
		{
			config.GET("/payment", common.GetPaymentConfig) // 支付配置（支付宝、微信支付参数）
			config.GET("/system", common.GetSystemConfig)   // 系统配置（版本号、客服电话等）
		}
	}

	// ==================== 患者端路由 ====================
	// 包含患者注册、登录、预约挂号、问诊、开药等功能
	// 详细路由配置见 patient_router.go
	SetupPatientRoutes(r)

	// ==================== 医生端路由 ====================
	// 包含医生注册、登录、排班、接诊、处方管理等功能
	// 详细路由配置见 doctor_router.go
	SetupDoctorRoutes(r)

	// ==================== 健康检查接口 ====================
	// 用于负载均衡器检查服务状态
	r.GET("/health", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"status":  "ok",
			"message": "智医快线服务运行正常",
		})
	})

	// ==================== 404 处理 ====================
	r.NoRoute(func(c *gin.Context) {
		c.JSON(404, gin.H{
			"code": 404,
			"msg":  "接口不存在",
		})
	})

	return r
}
